In recent years, a development technique of automatically generating a program from models has been known under the name of the model-driven architecture. With this development technique, a system developer (programmer) can program, without learning a description method using characters of a programming language, by combining predetermined figure expressions into a series of process flows.
A figure expression used in the above model-driven architecture represents an assigned process in a visually comprehensible manner. A program corresponding to the assigned process is associated previously or additionally with that process. The program associated with the figure expression is combined with other figures on the figure expressions and are thus coupled to programs of other figures.
Even if programs associated with such figure expressions or programs gathered to execute a series of processes can obtain the same result, they are classified in dependency upon the level of the skill of a developer or the like into good designed programs which that have concisely been described and no-good designed programs. Therefore, good designs and bad designs are frequently mixed in a program produced by a plurality of developers. A program of a no-good design would be defined as a program that requires a long time for performing a process in comparison with a program of a good design or defined as a program that consumes a large amount of resources, in spite of the fact that the same result as the good design can be obtained. Furthermore, even if a program associated with a figure expression may be a good design peculiar to one system, it may be a bad design used to other systems.
Meanwhile, programs that have been designed in the past are frequently used in product development. In a case where a plurality of programs have been designed in the past and all have been operated correctly, either one of those programs is used without distinguishing between good designed programs and no-good designed programs. On the other hand, if many programs of no-good designs are included in product development, the performance of products is lowered.
Therefore, an action (refactoring) to improve a no-good design into a good design becomes important. However, it is very difficult to manually confirm a program source for refactoring. This is caused by the fact that the improvement action itself depends upon the level of skill and an increase of improvement candidates because all of past systems become improvement candidates and the like. Furthermore, even skilled persons themselves have habits or tendency in refactoring. Thus, it is difficult to properly evaluate a large number of items such as reduction of resources and reduction of a processing time.
Accordingly, there has been desired a system that takes optimization into consideration at the time of development of the system or at the time of modification of the system.
Examples of related systems include Patent Document 1 (JP-A 2003-337697) and Patent Document 2 (JP-A 2005-174120).
A development system for a business system disclosed in Patent Document 1 includes original model storage means, refactoring rule storage means, and optimized model storage means. The development system for a business system operates as follows: An original model is described by a unified expression method using a UML (Unified Modeling Language). A subjective refactoring rule determined for optimization by a skilled person (consultant) is applied to generate an optimized model.
Furthermore, Patent Document 2 discloses an example of technology for analyzing the structural similarity of program data (source) expressed in a language (with characters). A web service connection processing system disclosed in Patent Document 2 compares a definition document of an assumed web service to be connected with a definition document of a new web service to be connected. Then, in a similarity determination process, arguments, namely, parameters of the definition documents of the two web services and data type information of a return value are read, and differences therebetween are extracted. The structural similarity is calculated based upon the extraction result. In the case where the similarity is determined, the system generates a conversion rule and properly calls the web services in accordance with the rule.